/**
 * 
 */
package ar.edu.ufasta.presupuestos.servicios.presupuesto;

import java.util.List;

import ar.edu.ufasta.presupuestos.logica.entidades.presupuesto.Presupuesto;
import ar.edu.ufasta.presupuestos.logica.entidades.remito.RemitoCompra;
import ar.edu.ufasta.presupuestos.servicios.persistencia.ObjectID;
import ar.edu.ufasta.presupuestos.servicios.persistencia.PersistenceFacade;

/**
 * @author Carlos
 *
 */
public class PresupuestoService {

	private List<Presupuesto> presupuestos;
	
	/*
	 * Constructor
	 */
	@SuppressWarnings("unchecked")
	public PresupuestoService(){
		this.presupuestos = (List<Presupuesto>) PersistenceFacade.getInstance().search(Presupuesto.class, null);
	}
	
	/*
	 * Metodos de esta clase
	 */
	public void addPresupuesto(Presupuesto presupuesto){
		this.presupuestos.add(presupuesto);
	}
	
	public void removePresupuesto(ObjectID presupuestoId){
		Presupuesto p = new Presupuesto();
		p.setOid(presupuestoId);
		this.presupuestos.remove(p);
	}
	
	public void updatePresupuesto(Presupuesto presupuesto){
		this.presupuestos.remove(presupuesto);
		this.presupuestos.add(presupuesto);
	}
	
	public Presupuesto getPresupuesto(ObjectID presupuestoId){
		int posic;
		Presupuesto p = new Presupuesto();
		p.setOid(presupuestoId);
		posic = this.presupuestos.indexOf(p);
		return this.presupuestos.get(posic);
	}
	
	@SuppressWarnings("unchecked")
	public List<Presupuesto> getAllPresupuesto(){
		return (List<Presupuesto>) PersistenceFacade.getInstance().search(Presupuesto.class, null);
	}
	
	public void Resolver(List<Presupuesto> presupuestos){
		for (Presupuesto presupuesto : presupuestos) {
//			Boolean terminado = null;
			presupuesto.resolver();
//			terminado = presupuesto.estanDetallesTerminados();
//			if(terminado){
//				presupuesto.setEstado(new Terminado());
//			}else{
//				presupuesto.setEstado(new EnProceso());
//			}
//			//PersistenceFacade.getInstance().put(presupuesto);
//			presupuesto.save();
		}
		List<RemitoCompra> remitosCompra = RemitoCompraMapper.getInstance().getRemitoFabricas();
		remitosCompra.addAll(RemitoCompraMapper.getInstance().getRemitoProveedores());
		for (RemitoCompra remitoCompra : remitosCompra) {
			PersistenceFacade.getInstance().put(remitoCompra);
//			remitoCompra.save();
			remitoCompra.sendRemitoMail();
		}
	
	}
		
}
